package com.asset.dispoal.file.bank.domain.db.mapper;


import com.asset.dispoal.file.bank.domain.dto.FileBankDetailExportTemplate;
import com.asset.dispoal.file.bank.dto.FileBankDetailPageRequest;
import com.asset.dispoal.file.bank.dto.FileBankDetailRequest;
import com.asset.dispoal.file.bank.dto.FileBankDetailResponse;
import com.asset.dispoal.file.bank.dto.FileBankExportRequest;
import com.asset.dispoal.file.bank.dto.FileBankPageRequest;
import com.asset.dispoal.file.bank.dto.FileBankRequest;
import com.asset.dispoal.file.bank.dto.FileBankResponse;
import com.asset.dispoal.file.bank.dto.FileBankStatisticsDetailResponse;
import com.asset.dispoal.file.bank.dto.FileBankStatisticsRequest;
import com.asset.dispoal.file.bank.dto.FileBankStatisticsResponse;
import com.asset.dispoal.file.bank.dto.FileBankTypeAmount;
import com.asset.dispoal.file.replyDetail.dto.FileReplyTypeData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import tech.mhuang.pacebox.springboot.protocol.data.Page;

import java.math.BigDecimal;
import java.util.List;

@Mapper
public interface FileBankMapper {

    Integer deleteAll(String id);

    Integer save(FileBankRequest request);

    Integer deleteDetail(String id);

    Integer modify(FileBankRequest request);

    Integer pageCount(FileBankPageRequest request);

    List<FileBankResponse> page(Page<FileBankPageRequest> request);

    Integer modifyAmount(@Param("amount") BigDecimal surplusAmount, @Param("id") String bankId);

    Integer pageDetailCount(FileBankDetailPageRequest request);

    List<FileBankDetailResponse> pageDetail(Page<FileBankDetailPageRequest> request);

    Integer saveDetail(FileBankDetailRequest request);

    Integer modifyDetail(FileBankDetailRequest request);

    List<String> queryByLevel();

    List<FileReplyTypeData> queryByLevelAmount();

    BigDecimal getAmountById(String bankId);

    List<FileBankTypeAmount> queryDepartmentStatistics(String bankId);

    List<FileBankTypeAmount> queryReimburStatistics(String bankId);

    List<FileReplyTypeData> queryMonthList(String bankId);

    List<FileBankResponse> queryAll();

    List<FileBankDetailExportTemplate> queryDetail(FileBankExportRequest request);

    FileBankStatisticsResponse querySumStatistics(FileBankStatisticsRequest statisticsRequest);

    List<FileBankStatisticsDetailResponse> querySumStatisticsDetail(FileBankStatisticsRequest statisticsRequest);
}
